package com.dingding.service.account.core.dao;

import java.math.BigDecimal;

import com.dingding.common.core.base.dao.IBaseDao;
import com.dingding.common.core.beans.Useraccount;

/**
 * 
 * @ClassName: IUserAccountDao 
 * @Description: 用户账户表表DAO 
 * @author CHEHAUNBO 
 * @date 2016年3月30日 下午4:21:48
 * 
 */
public interface IUserAccountDao extends IBaseDao<Useraccount> {

	/**
	 * 
	 * @Title: addUserAccount 
	 * @Description: 添加用户账户信息 
	 * @param userLoginId 登录id 
	 * @return 
	 * @author CHEHUANBO
	 * 
	 */
	public void addUserAccount(String userLoginId);

	/**
	 * @Description: 获取用户账户信息
	 * @param loginId 用户登录id
	 * @author fengshuonan
	 * @return Useraccount
	 */
	public Useraccount getUserAccount(String loginId);

	/**
	 * 
	 * @Description: 扣钱
	 * @param userId 用户ID 
	 * @param money 金额
	 * @author CHEHUABNO
	 * @return boolean true 扣除成功   false 扣除失败
	 * @since V2.3.0
	 * 
	 */
	public boolean deductRemainMoney(String userId, BigDecimal money);

	/**
	 * 
	 * @Description: 扣除剩余金钱（出租车）
	 * @param userId 用户ID
	 * @param money 金额
	 * @author YHQ
	 * @since V2.5.4
	 * @return boolean true 扣除成功   false 扣除失败
	 * 
	 */
	public boolean taxiDeductRemainMoney(String userId, BigDecimal money);
	
	/**
	 * 
	 * @Description: 充值
	 * @param userId 用户ID
	 * @param money 金额
	 * @author CHEHUANBO
	 * @return boolean true 充值成功   false 充值失败
	 * 
	 */
	public boolean rechargMoney(String userId, BigDecimal money);

	/**
	 * 
	 * @Title: specialRecharge  给专车司机转账
	 * @param userId 用户Id
	 * @param money 金额
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean specialRecharge(String userId, BigDecimal money);
	
	/**
	 * 
	 * @Title: refunds 
	 * @Description: 给乘客退款(顺风车) 
	 * @param loginId 用户Id
	 * @param fee 退款金额
	 * @author YHQ 
	 * @since V2.5.4
	 * @return boolean    返回类型
	 */
	public boolean refunds(String loginId, BigDecimal fee);
	
	
	/**
	 * 
	 * @Title: transferAccounts 
	 * @Description: 转账操作
	 * @param loginId 用户Id
	 * @param fee 转账金额
	 * @author YHQ 
	 * @since V2.5.4
	 * @return boolean    返回类型
	 */
	public boolean transferAccounts(String loginId, BigDecimal fee);
	
}
